package com.jiatuxueyuan.the4.remoteio;


import java.util.Date;

/**
 * 这是核心的数据结构，用来接收远程IO硬件模块的TCP连接，并保存设备ID和TCP Socket之间的映射关系，当需要反过来推送消息给远程IO硬件设备的时候，
 * 我们需要根据设备ID找出TCP连接，不然的话没法推送消息出去。
 *
 * 考虑到连接的远程IO设备很多，所以RemoteIoServerNode会部署多台，形成分布式的结构，假设每个可以接受10万个客户端连接，那么部署10台就可以接受100万，
 * 当然了，实际一台完全可以接受上百万，不过根据市场销售情况，未必卖得了那么多，呵呵。
 *
 * <p>通常来说，我们用设备的MAC地址作为它的ID</p>
 */
public class RemoteIoServer {

    private int id;

    private String name;

    private String mac;

    /**
     * 公网IP地址
     */
    private String wanIp;

    /**
     * TCP监听端口，供远程IO设备通过TCP连接上来
     */
    private int port;

    /**
     * 内网IP地址
     */
    private String lanIp;

    /**
     * 内网HTTP监听端口，这个是内部管理端口，对外提供WEB API，比如当需要打开/关闭远程IO设备的某个DO端口的时候，就可以通过这个WEB API来实现
     */
    private int httpPort;

    /**
     * 最多允许链接的客户端数量
     */
    private int capacity;

    /**
     * 当前活跃连接数
     */
    private int connects;

    private Date createDate;

    private Date lastModifiedDate;

}
